using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._3DAnalystTools._Visibility
{
    /// <summary>
    /// <para>Sun Shadow Volume</para>
    /// <para>Creates closed volumes that model shadows cast by each feature using sunlight for a given date and time.</para>
    /// <para>创建闭合体积体，该体积体使用给定日期和时间的阳光对每个要素投射的阴影进行建模。</para>
    /// </summary>    
    [DisplayName("Sun Shadow Volume")]
    public class SunShadowVolume : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public SunShadowVolume()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_features">
        /// <para>Input Features</para>
        /// <para>The multipatch features that will be used to model shadows. Polygon and line features can also be used if they are added as an extruded 3D layer.</para>
        /// <para>将用于对阴影进行建模的多面体特征。如果将面和线要素添加为拉伸 3D 图层，则也可以使用它们。</para>
        /// </param>
        /// <param name="_start_date_and_time">
        /// <para>Start Date and Time</para>
        /// <para>The date and time that the trajectory of sunlight will be calculated for modeling the shadows.</para>
        /// <para>计算太阳光轨迹以对阴影进行建模的日期和时间。</para>
        /// </param>
        /// <param name="_out_feature_class">
        /// <para>Output Feature Class</para>
        /// <para>The multipatch feature class that will store the resulting shadow volumes.</para>
        /// <para>将存储生成的阴影卷的多面体要素类。</para>
        /// </param>
        public SunShadowVolume(List<object> _in_features, object _start_date_and_time, object _out_feature_class)
        {
            this._in_features = _in_features;
            this._start_date_and_time = _start_date_and_time;
            this._out_feature_class = _out_feature_class;
        }
        public override string ToolboxName => "3D Analyst Tools";

        public override string ToolName => "Sun Shadow Volume";

        public override string CallName => "3d.SunShadowVolume";

        public override List<string> AcceptEnvironments => ["XYDomain", "ZDomain", "autoCommit", "configKeyword", "extent", "geographicTransformations", "outputCoordinateSystem", "workspace"];

        public override object[] ParameterInfo => [_in_features, _start_date_and_time, _out_feature_class, _adjusted_for_dst.GetGPValue(), _time_zone.GetGPValue(), _end_date_and_time, _iteration_interval, _iteration_unit.GetGPValue()];

        /// <summary>
        /// <para>Input Features</para>
        /// <para>The multipatch features that will be used to model shadows. Polygon and line features can also be used if they are added as an extruded 3D layer.</para>
        /// <para>将用于对阴影进行建模的多面体特征。如果将面和线要素添加为拉伸 3D 图层，则也可以使用它们。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Features")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public List<object> _in_features { get; set; }


        /// <summary>
        /// <para>Start Date and Time</para>
        /// <para>The date and time that the trajectory of sunlight will be calculated for modeling the shadows.</para>
        /// <para>计算太阳光轨迹以对阴影进行建模的日期和时间。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Start Date and Time")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _start_date_and_time { get; set; }


        /// <summary>
        /// <para>Output Feature Class</para>
        /// <para>The multipatch feature class that will store the resulting shadow volumes.</para>
        /// <para>将存储生成的阴影卷的多面体要素类。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Feature Class")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _out_feature_class { get; set; }


        /// <summary>
        /// <para>Adjusted for Daylight Savings Time</para>
        /// <para><xdoc>
        ///   <para>Specifies if time value is adjusted for Daylight Savings Time (DST).</para>
        ///   <bulletList>
        ///     <bullet_item>Unchecked—DST is not observed. This is the default.</bullet_item><para/>
        ///     <bullet_item>Checked—DST is observed.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否调整夏令时 （DST） 的时间值。</para>
        ///   <bulletList>
        ///     <bullet_item>未选中 - 未观察到 DST。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>选中 - 观察到 DST。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Adjusted for Daylight Savings Time")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _adjusted_for_dst_value _adjusted_for_dst { get; set; } = _adjusted_for_dst_value._true;

        public enum _adjusted_for_dst_value
        {
            /// <summary>
            /// <para>ADJUSTED_FOR_DST</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("ADJUSTED_FOR_DST")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NOT_ADJUSTED_FOR_DST</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NOT_ADJUSTED_FOR_DST")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Time Zone</para>
        /// <para>The time zone in which the participating input is located. The default setting is the time zone to which the operating system is set.</para>
        /// <para>参与输入所在的时区。默认设置是操作系统设置为的时区。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Time Zone")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _time_zone_value _time_zone { get; set; } = _time_zone_value._Pacific_Standard_Time;

        public enum _time_zone_value
        {
            /// <summary>
            /// <para>UTC</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("UTC")]
            [GPEnumValue("UTC")]
            _UTC,

            /// <summary>
            /// <para>Dateline_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Dateline_Standard_Time")]
            [GPEnumValue("Dateline_Standard_Time")]
            _Dateline_Standard_Time,

            /// <summary>
            /// <para>UTC-11</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("UTC-11")]
            [GPEnumValue("UTC-11")]
            value2,

            /// <summary>
            /// <para>Aleutian_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Aleutian_Standard_Time")]
            [GPEnumValue("Aleutian_Standard_Time")]
            _Aleutian_Standard_Time,

            /// <summary>
            /// <para>Hawaiian_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Hawaiian_Standard_Time")]
            [GPEnumValue("Hawaiian_Standard_Time")]
            _Hawaiian_Standard_Time,

            /// <summary>
            /// <para>Marquesas_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Marquesas_Standard_Time")]
            [GPEnumValue("Marquesas_Standard_Time")]
            _Marquesas_Standard_Time,

            /// <summary>
            /// <para>Alaskan_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Alaskan_Standard_Time")]
            [GPEnumValue("Alaskan_Standard_Time")]
            _Alaskan_Standard_Time,

            /// <summary>
            /// <para>UTC-09</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("UTC-09")]
            [GPEnumValue("UTC-09")]
            value7,

            /// <summary>
            /// <para>Pacific_Standard_Time_(Mexico)</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Pacific_Standard_Time_(Mexico)")]
            [GPEnumValue("Pacific_Standard_Time_(Mexico)")]
            value8,

            /// <summary>
            /// <para>UTC-08</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("UTC-08")]
            [GPEnumValue("UTC-08")]
            value9,

            /// <summary>
            /// <para>Pacific_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Pacific_Standard_Time")]
            [GPEnumValue("Pacific_Standard_Time")]
            _Pacific_Standard_Time,

            /// <summary>
            /// <para>US_Mountain_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("US_Mountain_Standard_Time")]
            [GPEnumValue("US_Mountain_Standard_Time")]
            _US_Mountain_Standard_Time,

            /// <summary>
            /// <para>Mountain_Standard_Time_(Mexico)</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Mountain_Standard_Time_(Mexico)")]
            [GPEnumValue("Mountain_Standard_Time_(Mexico)")]
            value12,

            /// <summary>
            /// <para>Mountain_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Mountain_Standard_Time")]
            [GPEnumValue("Mountain_Standard_Time")]
            _Mountain_Standard_Time,

            /// <summary>
            /// <para>Yukon_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Yukon_Standard_Time")]
            [GPEnumValue("Yukon_Standard_Time")]
            _Yukon_Standard_Time,

            /// <summary>
            /// <para>Central_America_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Central_America_Standard_Time")]
            [GPEnumValue("Central_America_Standard_Time")]
            _Central_America_Standard_Time,

            /// <summary>
            /// <para>Central_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Central_Standard_Time")]
            [GPEnumValue("Central_Standard_Time")]
            _Central_Standard_Time,

            /// <summary>
            /// <para>Easter_Island_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Easter_Island_Standard_Time")]
            [GPEnumValue("Easter_Island_Standard_Time")]
            _Easter_Island_Standard_Time,

            /// <summary>
            /// <para>Central_Standard_Time_(Mexico)</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Central_Standard_Time_(Mexico)")]
            [GPEnumValue("Central_Standard_Time_(Mexico)")]
            value18,

            /// <summary>
            /// <para>Canada_Central_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Canada_Central_Standard_Time")]
            [GPEnumValue("Canada_Central_Standard_Time")]
            _Canada_Central_Standard_Time,

            /// <summary>
            /// <para>SA_Pacific_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("SA_Pacific_Standard_Time")]
            [GPEnumValue("SA_Pacific_Standard_Time")]
            _SA_Pacific_Standard_Time,

            /// <summary>
            /// <para>Eastern_Standard_Time_(Mexico)</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Eastern_Standard_Time_(Mexico)")]
            [GPEnumValue("Eastern_Standard_Time_(Mexico)")]
            value21,

            /// <summary>
            /// <para>Eastern_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Eastern_Standard_Time")]
            [GPEnumValue("Eastern_Standard_Time")]
            _Eastern_Standard_Time,

            /// <summary>
            /// <para>Haiti_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Haiti_Standard_Time")]
            [GPEnumValue("Haiti_Standard_Time")]
            _Haiti_Standard_Time,

            /// <summary>
            /// <para>Cuba_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Cuba_Standard_Time")]
            [GPEnumValue("Cuba_Standard_Time")]
            _Cuba_Standard_Time,

            /// <summary>
            /// <para>US_Eastern_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("US_Eastern_Standard_Time")]
            [GPEnumValue("US_Eastern_Standard_Time")]
            _US_Eastern_Standard_Time,

            /// <summary>
            /// <para>Turks_And_Caicos_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Turks_And_Caicos_Standard_Time")]
            [GPEnumValue("Turks_And_Caicos_Standard_Time")]
            _Turks_And_Caicos_Standard_Time,

            /// <summary>
            /// <para>Paraguay_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Paraguay_Standard_Time")]
            [GPEnumValue("Paraguay_Standard_Time")]
            _Paraguay_Standard_Time,

            /// <summary>
            /// <para>Atlantic_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Atlantic_Standard_Time")]
            [GPEnumValue("Atlantic_Standard_Time")]
            _Atlantic_Standard_Time,

            /// <summary>
            /// <para>Venezuela_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Venezuela_Standard_Time")]
            [GPEnumValue("Venezuela_Standard_Time")]
            _Venezuela_Standard_Time,

            /// <summary>
            /// <para>Central_Brazilian_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Central_Brazilian_Standard_Time")]
            [GPEnumValue("Central_Brazilian_Standard_Time")]
            _Central_Brazilian_Standard_Time,

            /// <summary>
            /// <para>SA_Western_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("SA_Western_Standard_Time")]
            [GPEnumValue("SA_Western_Standard_Time")]
            _SA_Western_Standard_Time,

            /// <summary>
            /// <para>Pacific_SA_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Pacific_SA_Standard_Time")]
            [GPEnumValue("Pacific_SA_Standard_Time")]
            _Pacific_SA_Standard_Time,

            /// <summary>
            /// <para>Newfoundland_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Newfoundland_Standard_Time")]
            [GPEnumValue("Newfoundland_Standard_Time")]
            _Newfoundland_Standard_Time,

            /// <summary>
            /// <para>Tocantins_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Tocantins_Standard_Time")]
            [GPEnumValue("Tocantins_Standard_Time")]
            _Tocantins_Standard_Time,

            /// <summary>
            /// <para>E._South_America_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("E._South_America_Standard_Time")]
            [GPEnumValue("E._South_America_Standard_Time")]
            value35,

            /// <summary>
            /// <para>SA_Eastern_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("SA_Eastern_Standard_Time")]
            [GPEnumValue("SA_Eastern_Standard_Time")]
            _SA_Eastern_Standard_Time,

            /// <summary>
            /// <para>Argentina_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Argentina_Standard_Time")]
            [GPEnumValue("Argentina_Standard_Time")]
            _Argentina_Standard_Time,

            /// <summary>
            /// <para>Greenland_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Greenland_Standard_Time")]
            [GPEnumValue("Greenland_Standard_Time")]
            _Greenland_Standard_Time,

            /// <summary>
            /// <para>Montevideo_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Montevideo_Standard_Time")]
            [GPEnumValue("Montevideo_Standard_Time")]
            _Montevideo_Standard_Time,

            /// <summary>
            /// <para>Magallanes_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Magallanes_Standard_Time")]
            [GPEnumValue("Magallanes_Standard_Time")]
            _Magallanes_Standard_Time,

            /// <summary>
            /// <para>Saint_Pierre_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Saint_Pierre_Standard_Time")]
            [GPEnumValue("Saint_Pierre_Standard_Time")]
            _Saint_Pierre_Standard_Time,

            /// <summary>
            /// <para>Bahia_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Bahia_Standard_Time")]
            [GPEnumValue("Bahia_Standard_Time")]
            _Bahia_Standard_Time,

            /// <summary>
            /// <para>UTC-02</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("UTC-02")]
            [GPEnumValue("UTC-02")]
            value43,

            /// <summary>
            /// <para>Mid-Atlantic_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Mid-Atlantic_Standard_Time")]
            [GPEnumValue("Mid-Atlantic_Standard_Time")]
            value44,

            /// <summary>
            /// <para>Azores_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Azores_Standard_Time")]
            [GPEnumValue("Azores_Standard_Time")]
            _Azores_Standard_Time,

            /// <summary>
            /// <para>Cape_Verde_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Cape_Verde_Standard_Time")]
            [GPEnumValue("Cape_Verde_Standard_Time")]
            _Cape_Verde_Standard_Time,

            /// <summary>
            /// <para>GMT_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("GMT_Standard_Time")]
            [GPEnumValue("GMT_Standard_Time")]
            _GMT_Standard_Time,

            /// <summary>
            /// <para>Greenwich_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Greenwich_Standard_Time")]
            [GPEnumValue("Greenwich_Standard_Time")]
            _Greenwich_Standard_Time,

            /// <summary>
            /// <para>Sao_Tome_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Sao_Tome_Standard_Time")]
            [GPEnumValue("Sao_Tome_Standard_Time")]
            _Sao_Tome_Standard_Time,

            /// <summary>
            /// <para>Morocco_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Morocco_Standard_Time")]
            [GPEnumValue("Morocco_Standard_Time")]
            _Morocco_Standard_Time,

            /// <summary>
            /// <para>W._Europe_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("W._Europe_Standard_Time")]
            [GPEnumValue("W._Europe_Standard_Time")]
            value51,

            /// <summary>
            /// <para>Central_Europe_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Central_Europe_Standard_Time")]
            [GPEnumValue("Central_Europe_Standard_Time")]
            _Central_Europe_Standard_Time,

            /// <summary>
            /// <para>Romance_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Romance_Standard_Time")]
            [GPEnumValue("Romance_Standard_Time")]
            _Romance_Standard_Time,

            /// <summary>
            /// <para>Central_European_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Central_European_Standard_Time")]
            [GPEnumValue("Central_European_Standard_Time")]
            _Central_European_Standard_Time,

            /// <summary>
            /// <para>W._Central_Africa_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("W._Central_Africa_Standard_Time")]
            [GPEnumValue("W._Central_Africa_Standard_Time")]
            value55,

            /// <summary>
            /// <para>Jordan_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Jordan_Standard_Time")]
            [GPEnumValue("Jordan_Standard_Time")]
            _Jordan_Standard_Time,

            /// <summary>
            /// <para>GTB_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("GTB_Standard_Time")]
            [GPEnumValue("GTB_Standard_Time")]
            _GTB_Standard_Time,

            /// <summary>
            /// <para>Middle_East_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Middle_East_Standard_Time")]
            [GPEnumValue("Middle_East_Standard_Time")]
            _Middle_East_Standard_Time,

            /// <summary>
            /// <para>Egypt_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Egypt_Standard_Time")]
            [GPEnumValue("Egypt_Standard_Time")]
            _Egypt_Standard_Time,

            /// <summary>
            /// <para>E._Europe_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("E._Europe_Standard_Time")]
            [GPEnumValue("E._Europe_Standard_Time")]
            value60,

            /// <summary>
            /// <para>Syria_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Syria_Standard_Time")]
            [GPEnumValue("Syria_Standard_Time")]
            _Syria_Standard_Time,

            /// <summary>
            /// <para>West_Bank_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("West_Bank_Standard_Time")]
            [GPEnumValue("West_Bank_Standard_Time")]
            _West_Bank_Standard_Time,

            /// <summary>
            /// <para>South_Africa_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("South_Africa_Standard_Time")]
            [GPEnumValue("South_Africa_Standard_Time")]
            _South_Africa_Standard_Time,

            /// <summary>
            /// <para>FLE_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("FLE_Standard_Time")]
            [GPEnumValue("FLE_Standard_Time")]
            _FLE_Standard_Time,

            /// <summary>
            /// <para>Israel_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Israel_Standard_Time")]
            [GPEnumValue("Israel_Standard_Time")]
            _Israel_Standard_Time,

            /// <summary>
            /// <para>South_Sudan_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("South_Sudan_Standard_Time")]
            [GPEnumValue("South_Sudan_Standard_Time")]
            _South_Sudan_Standard_Time,

            /// <summary>
            /// <para>Kaliningrad_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Kaliningrad_Standard_Time")]
            [GPEnumValue("Kaliningrad_Standard_Time")]
            _Kaliningrad_Standard_Time,

            /// <summary>
            /// <para>Sudan_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Sudan_Standard_Time")]
            [GPEnumValue("Sudan_Standard_Time")]
            _Sudan_Standard_Time,

            /// <summary>
            /// <para>Libya_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Libya_Standard_Time")]
            [GPEnumValue("Libya_Standard_Time")]
            _Libya_Standard_Time,

            /// <summary>
            /// <para>Namibia_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Namibia_Standard_Time")]
            [GPEnumValue("Namibia_Standard_Time")]
            _Namibia_Standard_Time,

            /// <summary>
            /// <para>Arabic_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Arabic_Standard_Time")]
            [GPEnumValue("Arabic_Standard_Time")]
            _Arabic_Standard_Time,

            /// <summary>
            /// <para>Turkey_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Turkey_Standard_Time")]
            [GPEnumValue("Turkey_Standard_Time")]
            _Turkey_Standard_Time,

            /// <summary>
            /// <para>Arab_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Arab_Standard_Time")]
            [GPEnumValue("Arab_Standard_Time")]
            _Arab_Standard_Time,

            /// <summary>
            /// <para>Belarus_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Belarus_Standard_Time")]
            [GPEnumValue("Belarus_Standard_Time")]
            _Belarus_Standard_Time,

            /// <summary>
            /// <para>Russian_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Russian_Standard_Time")]
            [GPEnumValue("Russian_Standard_Time")]
            _Russian_Standard_Time,

            /// <summary>
            /// <para>E._Africa_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("E._Africa_Standard_Time")]
            [GPEnumValue("E._Africa_Standard_Time")]
            value76,

            /// <summary>
            /// <para>Volgograd_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Volgograd_Standard_Time")]
            [GPEnumValue("Volgograd_Standard_Time")]
            _Volgograd_Standard_Time,

            /// <summary>
            /// <para>Iran_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Iran_Standard_Time")]
            [GPEnumValue("Iran_Standard_Time")]
            _Iran_Standard_Time,

            /// <summary>
            /// <para>Arabian_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Arabian_Standard_Time")]
            [GPEnumValue("Arabian_Standard_Time")]
            _Arabian_Standard_Time,

            /// <summary>
            /// <para>Astrakhan_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Astrakhan_Standard_Time")]
            [GPEnumValue("Astrakhan_Standard_Time")]
            _Astrakhan_Standard_Time,

            /// <summary>
            /// <para>Azerbaijan_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Azerbaijan_Standard_Time")]
            [GPEnumValue("Azerbaijan_Standard_Time")]
            _Azerbaijan_Standard_Time,

            /// <summary>
            /// <para>Russia_Time_Zone_3</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Russia_Time_Zone_3")]
            [GPEnumValue("Russia_Time_Zone_3")]
            _Russia_Time_Zone_3,

            /// <summary>
            /// <para>Mauritius_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Mauritius_Standard_Time")]
            [GPEnumValue("Mauritius_Standard_Time")]
            _Mauritius_Standard_Time,

            /// <summary>
            /// <para>Saratov_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Saratov_Standard_Time")]
            [GPEnumValue("Saratov_Standard_Time")]
            _Saratov_Standard_Time,

            /// <summary>
            /// <para>Georgian_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Georgian_Standard_Time")]
            [GPEnumValue("Georgian_Standard_Time")]
            _Georgian_Standard_Time,

            /// <summary>
            /// <para>Caucasus_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Caucasus_Standard_Time")]
            [GPEnumValue("Caucasus_Standard_Time")]
            _Caucasus_Standard_Time,

            /// <summary>
            /// <para>Afghanistan_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Afghanistan_Standard_Time")]
            [GPEnumValue("Afghanistan_Standard_Time")]
            _Afghanistan_Standard_Time,

            /// <summary>
            /// <para>West_Asia_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("West_Asia_Standard_Time")]
            [GPEnumValue("West_Asia_Standard_Time")]
            _West_Asia_Standard_Time,

            /// <summary>
            /// <para>Ekaterinburg_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Ekaterinburg_Standard_Time")]
            [GPEnumValue("Ekaterinburg_Standard_Time")]
            _Ekaterinburg_Standard_Time,

            /// <summary>
            /// <para>Pakistan_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Pakistan_Standard_Time")]
            [GPEnumValue("Pakistan_Standard_Time")]
            _Pakistan_Standard_Time,

            /// <summary>
            /// <para>Qyzylorda_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Qyzylorda_Standard_Time")]
            [GPEnumValue("Qyzylorda_Standard_Time")]
            _Qyzylorda_Standard_Time,

            /// <summary>
            /// <para>India_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("India_Standard_Time")]
            [GPEnumValue("India_Standard_Time")]
            _India_Standard_Time,

            /// <summary>
            /// <para>Sri_Lanka_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Sri_Lanka_Standard_Time")]
            [GPEnumValue("Sri_Lanka_Standard_Time")]
            _Sri_Lanka_Standard_Time,

            /// <summary>
            /// <para>Nepal_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Nepal_Standard_Time")]
            [GPEnumValue("Nepal_Standard_Time")]
            _Nepal_Standard_Time,

            /// <summary>
            /// <para>Central_Asia_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Central_Asia_Standard_Time")]
            [GPEnumValue("Central_Asia_Standard_Time")]
            _Central_Asia_Standard_Time,

            /// <summary>
            /// <para>Bangladesh_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Bangladesh_Standard_Time")]
            [GPEnumValue("Bangladesh_Standard_Time")]
            _Bangladesh_Standard_Time,

            /// <summary>
            /// <para>Omsk_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Omsk_Standard_Time")]
            [GPEnumValue("Omsk_Standard_Time")]
            _Omsk_Standard_Time,

            /// <summary>
            /// <para>Myanmar_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Myanmar_Standard_Time")]
            [GPEnumValue("Myanmar_Standard_Time")]
            _Myanmar_Standard_Time,

            /// <summary>
            /// <para>SE_Asia_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("SE_Asia_Standard_Time")]
            [GPEnumValue("SE_Asia_Standard_Time")]
            _SE_Asia_Standard_Time,

            /// <summary>
            /// <para>Altai_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Altai_Standard_Time")]
            [GPEnumValue("Altai_Standard_Time")]
            _Altai_Standard_Time,

            /// <summary>
            /// <para>W._Mongolia_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("W._Mongolia_Standard_Time")]
            [GPEnumValue("W._Mongolia_Standard_Time")]
            value101,

            /// <summary>
            /// <para>North_Asia_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("North_Asia_Standard_Time")]
            [GPEnumValue("North_Asia_Standard_Time")]
            _North_Asia_Standard_Time,

            /// <summary>
            /// <para>N._Central_Asia_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("N._Central_Asia_Standard_Time")]
            [GPEnumValue("N._Central_Asia_Standard_Time")]
            value103,

            /// <summary>
            /// <para>Tomsk_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Tomsk_Standard_Time")]
            [GPEnumValue("Tomsk_Standard_Time")]
            _Tomsk_Standard_Time,

            /// <summary>
            /// <para>China_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("China_Standard_Time")]
            [GPEnumValue("China_Standard_Time")]
            _China_Standard_Time,

            /// <summary>
            /// <para>North_Asia_East_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("North_Asia_East_Standard_Time")]
            [GPEnumValue("North_Asia_East_Standard_Time")]
            _North_Asia_East_Standard_Time,

            /// <summary>
            /// <para>Singapore_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Singapore_Standard_Time")]
            [GPEnumValue("Singapore_Standard_Time")]
            _Singapore_Standard_Time,

            /// <summary>
            /// <para>W._Australia_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("W._Australia_Standard_Time")]
            [GPEnumValue("W._Australia_Standard_Time")]
            value108,

            /// <summary>
            /// <para>Taipei_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Taipei_Standard_Time")]
            [GPEnumValue("Taipei_Standard_Time")]
            _Taipei_Standard_Time,

            /// <summary>
            /// <para>Ulaanbaatar_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Ulaanbaatar_Standard_Time")]
            [GPEnumValue("Ulaanbaatar_Standard_Time")]
            _Ulaanbaatar_Standard_Time,

            /// <summary>
            /// <para>Aus_Central_W._Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Aus_Central_W._Standard_Time")]
            [GPEnumValue("Aus_Central_W._Standard_Time")]
            value111,

            /// <summary>
            /// <para>Transbaikal_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Transbaikal_Standard_Time")]
            [GPEnumValue("Transbaikal_Standard_Time")]
            _Transbaikal_Standard_Time,

            /// <summary>
            /// <para>Tokyo_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Tokyo_Standard_Time")]
            [GPEnumValue("Tokyo_Standard_Time")]
            _Tokyo_Standard_Time,

            /// <summary>
            /// <para>North_Korea_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("North_Korea_Standard_Time")]
            [GPEnumValue("North_Korea_Standard_Time")]
            _North_Korea_Standard_Time,

            /// <summary>
            /// <para>Korea_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Korea_Standard_Time")]
            [GPEnumValue("Korea_Standard_Time")]
            _Korea_Standard_Time,

            /// <summary>
            /// <para>Yakutsk_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Yakutsk_Standard_Time")]
            [GPEnumValue("Yakutsk_Standard_Time")]
            _Yakutsk_Standard_Time,

            /// <summary>
            /// <para>Cen._Australia_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Cen._Australia_Standard_Time")]
            [GPEnumValue("Cen._Australia_Standard_Time")]
            value117,

            /// <summary>
            /// <para>AUS_Central_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("AUS_Central_Standard_Time")]
            [GPEnumValue("AUS_Central_Standard_Time")]
            _AUS_Central_Standard_Time,

            /// <summary>
            /// <para>E._Australia_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("E._Australia_Standard_Time")]
            [GPEnumValue("E._Australia_Standard_Time")]
            value119,

            /// <summary>
            /// <para>AUS_Eastern_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("AUS_Eastern_Standard_Time")]
            [GPEnumValue("AUS_Eastern_Standard_Time")]
            _AUS_Eastern_Standard_Time,

            /// <summary>
            /// <para>West_Pacific_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("West_Pacific_Standard_Time")]
            [GPEnumValue("West_Pacific_Standard_Time")]
            _West_Pacific_Standard_Time,

            /// <summary>
            /// <para>Tasmania_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Tasmania_Standard_Time")]
            [GPEnumValue("Tasmania_Standard_Time")]
            _Tasmania_Standard_Time,

            /// <summary>
            /// <para>Vladivostok_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Vladivostok_Standard_Time")]
            [GPEnumValue("Vladivostok_Standard_Time")]
            _Vladivostok_Standard_Time,

            /// <summary>
            /// <para>Lord_Howe_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Lord_Howe_Standard_Time")]
            [GPEnumValue("Lord_Howe_Standard_Time")]
            _Lord_Howe_Standard_Time,

            /// <summary>
            /// <para>Bougainville_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Bougainville_Standard_Time")]
            [GPEnumValue("Bougainville_Standard_Time")]
            _Bougainville_Standard_Time,

            /// <summary>
            /// <para>Russia_Time_Zone_10</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Russia_Time_Zone_10")]
            [GPEnumValue("Russia_Time_Zone_10")]
            _Russia_Time_Zone_10,

            /// <summary>
            /// <para>Magadan_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Magadan_Standard_Time")]
            [GPEnumValue("Magadan_Standard_Time")]
            _Magadan_Standard_Time,

            /// <summary>
            /// <para>Norfolk_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Norfolk_Standard_Time")]
            [GPEnumValue("Norfolk_Standard_Time")]
            _Norfolk_Standard_Time,

            /// <summary>
            /// <para>Sakhalin_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Sakhalin_Standard_Time")]
            [GPEnumValue("Sakhalin_Standard_Time")]
            _Sakhalin_Standard_Time,

            /// <summary>
            /// <para>Central_Pacific_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Central_Pacific_Standard_Time")]
            [GPEnumValue("Central_Pacific_Standard_Time")]
            _Central_Pacific_Standard_Time,

            /// <summary>
            /// <para>Russia_Time_Zone_11</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Russia_Time_Zone_11")]
            [GPEnumValue("Russia_Time_Zone_11")]
            _Russia_Time_Zone_11,

            /// <summary>
            /// <para>New_Zealand_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("New_Zealand_Standard_Time")]
            [GPEnumValue("New_Zealand_Standard_Time")]
            _New_Zealand_Standard_Time,

            /// <summary>
            /// <para>UTC+12</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("UTC+12")]
            [GPEnumValue("UTC+12")]
            value133,

            /// <summary>
            /// <para>Fiji_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Fiji_Standard_Time")]
            [GPEnumValue("Fiji_Standard_Time")]
            _Fiji_Standard_Time,

            /// <summary>
            /// <para>Kamchatka_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Kamchatka_Standard_Time")]
            [GPEnumValue("Kamchatka_Standard_Time")]
            _Kamchatka_Standard_Time,

            /// <summary>
            /// <para>Chatham_Islands_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Chatham_Islands_Standard_Time")]
            [GPEnumValue("Chatham_Islands_Standard_Time")]
            _Chatham_Islands_Standard_Time,

            /// <summary>
            /// <para>UTC+13</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("UTC+13")]
            [GPEnumValue("UTC+13")]
            value137,

            /// <summary>
            /// <para>Tonga_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Tonga_Standard_Time")]
            [GPEnumValue("Tonga_Standard_Time")]
            _Tonga_Standard_Time,

            /// <summary>
            /// <para>Samoa_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Samoa_Standard_Time")]
            [GPEnumValue("Samoa_Standard_Time")]
            _Samoa_Standard_Time,

            /// <summary>
            /// <para>Line_Islands_Standard_Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Line_Islands_Standard_Time")]
            [GPEnumValue("Line_Islands_Standard_Time")]
            _Line_Islands_Standard_Time,

        }

        /// <summary>
        /// <para>End Date and Time</para>
        /// <para>The final date and time for calculating sun position. If only a date is provided, the final time is presumed to be sunset.</para>
        /// <para>计算太阳位置的最终日期和时间。如果仅提供日期，则推定最终时间为日落。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("End Date and Time")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _end_date_and_time { get; set; } = null;


        /// <summary>
        /// <para>Iteration Interval</para>
        /// <para>The value used to define the iteration of time from the start date.</para>
        /// <para>用于定义从开始日期开始的时间迭代的值。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Iteration Interval")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public double _iteration_interval { get; set; } = 0;


        /// <summary>
        /// <para>Iteration Unit</para>
        /// <para><xdoc>
        ///   <para>The unit that defines the iteration value applied to the Start Date and Time.</para>
        ///   <bulletList>
        ///     <bullet_item>Days—Iteration value will represent days. This is the default.</bullet_item><para/>
        ///     <bullet_item>Hours—Iteration value will represent one or more hours.</bullet_item><para/>
        ///     <bullet_item>Minutes—Iteration value will represent one or more minutes.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>定义应用于“开始日期”和“时间”的迭代值的单位。</para>
        ///   <bulletList>
        ///     <bullet_item>天 - 迭代值将表示天。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>小时数 - 迭代值将表示一个或多个小时。</bullet_item><para/>
        ///     <bullet_item>分钟 - 迭代值将表示一分钟或多分钟。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Iteration Unit")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _iteration_unit_value _iteration_unit { get; set; } = _iteration_unit_value._DAYS;

        public enum _iteration_unit_value
        {
            /// <summary>
            /// <para>Days</para>
            /// <para>Days—Iteration value will represent days. This is the default.</para>
            /// <para>天 - 迭代值将表示天。这是默认设置。</para>
            /// </summary>
            [Description("Days")]
            [GPEnumValue("DAYS")]
            _DAYS,

            /// <summary>
            /// <para>Hours</para>
            /// <para>Hours—Iteration value will represent one or more hours.</para>
            /// <para>小时数 - 迭代值将表示一个或多个小时。</para>
            /// </summary>
            [Description("Hours")]
            [GPEnumValue("HOURS")]
            _HOURS,

            /// <summary>
            /// <para>Minutes</para>
            /// <para>Minutes—Iteration value will represent one or more minutes.</para>
            /// <para>分钟 - 迭代值将表示一分钟或多分钟。</para>
            /// </summary>
            [Description("Minutes")]
            [GPEnumValue("MINUTES")]
            _MINUTES,

        }

        public SunShadowVolume SetEnv(object XYDomain = null, object ZDomain = null, int? autoCommit = null, object configKeyword = null, object extent = null, object geographicTransformations = null, object outputCoordinateSystem = null, object workspace = null)
        {
            base.SetEnv(XYDomain: XYDomain, ZDomain: ZDomain, autoCommit: autoCommit, configKeyword: configKeyword, extent: extent, geographicTransformations: geographicTransformations, outputCoordinateSystem: outputCoordinateSystem, workspace: workspace);
            return this;
        }

    }

}